Application software (also referred to as an application) is generally designed to perform one or more tasks, activities, or projects on behalf of users. For example, some business applications are used by business users to perform various business functions, like measuring productivity, tracking inventory, workflow management, and executing various back-office tasks. Business applications sharing the same or similar business functions may be considered as a class of business applications, such as business process management (BPM) applications and master data management (MDM) applications. The business applications in the same class may share data models, such as the same or similar business objects (e.g., classes, objects, and relationships). In addition to its business function, each particular business application may be built based on knowledge from one or more domains of interest, such as the human resource domain, healthcare domain, technology domain, etc. For example, a new employee on-boarding application may belong to the class of BPM applications and specialize in the human resource domain.
Traditionally, data models shared by the same class of business applications are expressed by custom software modules written, for instance, in a traditional object-oriented programming language reflecting the data model as business objects. Typically, to add domain-specific knowledge to a business application, programmers write application code embodying the domain-specific knowledge in the same programming language (as the source code of the business application), or the application code is generated automatically based on some information gathered from a business analyst or a domain expert. Regardless, these typical approaches generally require changes to the application code of the business application. As such, when new code is introduced in an application, a significant amount of time and effort is generally required to ensure the integrity of the resulting application, which brings significant barriers in terms of productivity, and can propagate errors throughout a code base in an unpredictable fashion. These and other drawbacks exist.